package com.start.form.engine.admin;

import com.start.form.engine.core.StartColumnInfo;
import com.start.form.engine.core.model.StartFormColumnModel;
import com.start.form.engine.core.entity.StartFormConfig;
import com.start.form.engine.core.listener.StartTableListener;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * 处理用户自定义创建表单
 */
@Component
public class StartAdminFormListener implements StartTableListener {
    @Override
    public String getGroupCode() {
        return StartFormAdminConstant.ADMIN_FORM_PREFIX_CODE;
    }

    /**
     * 创建数据表前
     *
     * @param formConfig
     */
    @Override
    public void beforeCreateTable(StartFormConfig formConfig) {
        if (!formConfig.getTableName().startsWith(StartFormAdminConstant.ADMIN_FORM_PREFIX_CODE)) {
            String trim = formConfig.getTableName().trim();
            formConfig.setTableName(StartFormAdminConstant.ADMIN_FORM_PREFIX_CODE + trim);
        }
    }

    /**
     * 创建表后
     *
     * @param formConfig
     */
    @Override
    public void afterCreateTable(StartFormConfig formConfig) {

    }

    /**
     * 更新数据表前
     *
     * @param formConfig 表新配置
     * @param oldColumn  表旧列
     */
    @Override
    public void beforeUpdateTable(StartFormConfig formConfig, List<StartFormColumnModel> oldColumn) {
        if (!formConfig.getTableName().startsWith(StartFormAdminConstant.ADMIN_FORM_PREFIX_CODE)) {
            String trim = formConfig.getTableName().trim();
            formConfig.setTableName(StartFormAdminConstant.ADMIN_FORM_PREFIX_CODE + trim);
        }
    }

    /**
     * 更新数据表后
     *
     * @param formConfig
     */
    @Override
    public void afterUpdateTable(StartFormConfig formConfig) {

    }

    /**
     * 同步数据表前
     *
     * @param formConfig      数据表配置
     * @param startColumnInfo
     */
    @Override
    public void beforeSynchronizationTable(StartFormConfig formConfig, StartColumnInfo startColumnInfo) {

    }

    /**
     * 同步数据表后
     *
     * @param formConfig      数据表配置
     * @param newColumn
     * @param startColumnInfo
     */
    @Override
    public void afterSynchronizationTable(StartFormConfig formConfig, List<StartFormColumnModel> newColumn, StartColumnInfo startColumnInfo) {

    }

    /**
     * 删除数据表之前
     *
     * @param formConfig
     */
    @Override
    public void beforeDeleteTable(StartFormConfig formConfig) {

    }

    /**
     * 删除数据表之后
     *
     * @param formConfig
     */
    @Override
    public void afterDeleteTable(StartFormConfig formConfig) {

    }

    /**
     * 清空数据表前
     *
     * @param formConfig
     */
    @Override
    public void beforeClearData(StartFormConfig formConfig) {

    }

    /**
     * 清口数据表后
     *
     * @param formConfig
     */
    @Override
    public void afterClearData(StartFormConfig formConfig) {

    }
}
